<?php

namespace app\common\model;

use think\facade\Db;

/**
 * 角色管理
 * 角色其他状态
 *      0： 默认状态，可以进行权限认证操作
 *      1：账户禁止登录
 *      2：违规用户
 *      3：账户禁用
 *      4：不验证直接使用 
 * 
 * 时间 ： 2020年4月7日09:48:30
 * 作者 ： 夏立军
 */
class RoleModel
{

    /**
     * 获取所有角色信息
     * @return 返回所有信息
     */
    public function get_all_role(){
        return Db::name('role')->select();
    }

    /**
     * 获取角色的全部数量
     * @return 角色的数量
     */
    public function get_role_data_count()
    {
        $role_count = Db::name('role')->count();
        return $role_count;
    }

    /**
     * 角色列表 分页显示
     * 
     * @param $offset 获取数据的开始位置
     * @param $size   获取数据的条数
     * @return 获取到的所有项目
     */
    public function role_list_page(int $offset, int $size = 10)
    {
        $user_list = Db::name('role')->alias('a')
            ->join(['ams_admin' => 'b'], 'a.aid=b.id')
            ->field('a.id,a.name,a.status,a.note,a.create_time,b.name as admin_name')
            ->limit($offset, $size)->select();
        return $user_list;
    }

    /**
     * 添加一个角色
     * @param $aid 创建者ID
     * @param $name 角色名称
     * @param $status 角色状态
     * @param $note 备注
     * @return 是否添加成功 
     */
    public function role_add(int $aid, string $name, int $status, string $note)
    {
        $data['aid'] = $aid;
        $data['name'] = $name;
        $data['status'] = $status;
        $data['note'] = $note;
        $data['create_time'] = time();
        try {
            $role_res = Db::name('role')->save($data);
        } catch (\Throwable $th) {
            $role_res = false;
        }
        return $role_res;
    }

    /**
     * 通过 ID 获取角色信息
     * @param $id 角色ID
     * @return 角色信息
     */
    public function get_role_info_by_id(int $id)
    {
        $role_info = Db::name('role')->where('id', $id)->find();
        return $role_info;
    }

    /**
     * 修改更新角色信息
     * @param $id 角色ID
     * @param $name 角色名称
     * @param $status 角色状态
     * @param $note 备注信息
     * @param $update_time 更新时间
     * @return 是否更新成功
     */
    public function set_role_info(int $id, string $name, int $status, string $note, int $update_time)
    {
        $data['name'] = $name;
        $data['status'] = $status;
        $data['note'] = $note;
        $data['update_time'] = $update_time;
        $role_res = Db::name('role')->where('id', $id)->save($data);
        return $role_res;
    }

    /**
     * 删除角色
     * @param $id 角色ID
     * @return 是否删除
     */
    public function role_del($id)
    {
        try {
            Db::name('role')->where('id', $id)->delete();
        } catch (\Throwable $th) {
            return false;
        }
        return true;
    }
}
